import scala.util.control.Breaks._

object LoopControlDemo extends App {
  // 读者信息
  case class Reader(
                     id: String,
                     name: String,
                     unpaidFines: Double,    // 未缴罚款
                     hasOverdueBooks: Boolean,  // 是否有超期未还图书
                     daysOverdue: Int,       // 超期天数
                     isActive: Boolean       // 是否为有效读者
                   )

  // 创建测试读者
  val reader = Reader(
    "R2025001",
    "张三",
    30.0,  // 未缴罚款
    hasOverdueBooks = true,  // 有超期图书
    1,     // 超期1天
    isActive = true   // 有效读者
  )

  println(s"开始审核读者 ${reader.name}（${reader.id}）的借阅资格...")

  // 审核项列表
  val checks = List(
    "检查是否为有效读者",
    "检查未缴罚款金额",
    "检查是否有超期未还图书",
    "检查超期天数"
  )

  var checkPassed = true
  var checkIndex = 0

  // 使用while循环进行多步骤审核
  while (checkIndex < checks.length && checkPassed) {
    println(s"\n审核项 ${checkIndex + 1}：${checks(checkIndex)}")

    breakable {
      checkIndex match {
        case 0 =>  // 检查是否为有效读者
          if (!reader.isActive) {
            println("审核不通过：非有效读者")
            checkPassed = false
            break()  // 中断当前审核项处理
          }
          println("审核通过")

        case 1 =>  // 检查未缴罚款
          if (reader.unpaidFines > 50) {
            println(s"审核不通过：未缴罚款 ${reader.unpaidFines} 元，超过50元上限")
            checkPassed = false
            break()  // 中断当前审核项处理
          } else if (reader.unpaidFines > 0) {
            println(s"警告：有未缴罚款 ${reader.unpaidFines} 元，请及时缴纳")
            // 继续其他审核
          }
          println("审核通过")

        case 2 =>  // 检查是否有超期未还图书
          if (reader.hasOverdueBooks) {
            println("发现有超期未还图书")
            // 不中断，继续检查超期天数
          } else {
            println("审核通过")
            break()  // 提前结束当前审核项
          }

        case 3 =>  // 检查超期天数
          if (reader.daysOverdue > 7) {
            println(s"审核不通过：图书已超期 ${reader.daysOverdue} 天，超过7天")
            checkPassed = false
          } else if (reader.daysOverdue > 0) {
            println(s"警告：图书已超期 ${reader.daysOverdue} 天，请尽快归还")
            println("审核通过")
          } else {
            println("审核通过")
          }
      }
    }

    checkIndex += 1
  }

  // 输出最终审核结果
  println(s"\n===== 审核结果 =====")
  if (checkPassed) {
    println(s"读者 ${reader.name} 符合借阅条件，可以借书")
  } else {
    println(s"读者 ${reader.name} 不符合借阅条件，无法借书")
  }
}